/* WARNING!!  This message format is in pre-alpha development.  There is a high
 * probability any of these formats will change, which will cause prior
 * versions to no longer work.  You are more than welcome to setup to help us
 * develop and/or test, but it is NOT recommend you use the server or message
 * formats for production purposes until we at least reach beta development.
 * Thank you.
 */


syntax = "proto3";
import "enums.proto";


/* 
 * Plugin: This contains basic information about a plugin loaded on a Track,
 * including an indicator of the type of effect it has and what settings are
 * available.
 * Parameter list is a map of the parameter name and the default value of that
 * paremeter.  Automation can change any of these parameters at any point.
 * Generic Parameters are a list of parameters that are standardly used by
 * effects of that EffectType in hopes that an alternate plugin of the same
 * EffectType could be loaded and use the generic_parameters to get reasonably
 * close to the intended sound.
 */

message Plugin {
	string uri = 1;
	PluginType plugin_type = 2;
	EffectType effect_type = 3;
	map<string, float> parameters = 4;
	map<string, float> generic_parameters = 5;
	repeated PluginPort inputs = 6;
	repeated PluginPort outputs = 7;
	bool prefader = 8;	// True = PreFader, False = PostFader
}


/*
 * PluginPort:  Defines an Input or Output port to a plugin.
 */

message PluginPort {
	string name = 1;
	PortType port_type = 2;
	DataType data_type = 3;
	bool is_sidechain = 4;
}


